package com.passivator.logic;

import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import com.passivator.model.Sessions;

@Stateless(name = "Passivator", mappedName = "Passivator")
public class Passivator implements PassivatorRemote {

	private final static Logger logger = Logger.getLogger(Passivator.class
			.getName());

	@PersistenceContext(unitName = "sessionsPU")
	private EntityManager manager;

	public boolean passivate(byte[] session) {

		boolean result = false;

		try {

			if (session == null) {
				logger.log(Level.WARNING,
						"No se puede grabar la sesion porque es nula");
			} else {
				logger.log(Level.FINE,
						"Grabando informacion de la sesion caducada");
				// Creamos una nueva entidad y la inicializamos con datos
				Sessions ses = new Sessions();
				ses.setPassivationDate(new Date());
				ses.setContent(session);

				// Guardamos en base de datos
				manager.persist(ses);

				logger.log(Level.FINE, "Informacion grabada correctamente");
				result = true;
			}
		} catch (Exception ex) {
			logger.log(Level.WARNING,
					"Se ha producido un error al grabar la sesion", ex);
		}

		return result;
	}
}
